package com.jiajia;

/**
 * 引用计数算法：
 *      证明java使用的不是引用计数算法
 *
 * jvm参数：
 *      -XX:+PrintGCDetails
 *
 *
 *      实验1 ： 不显式的调用垃圾回收，内存的情况
 *      实验2 ： 显式的调用垃圾回收，内存的情况
 * @author : zjj
 * @date : 2022/5/5 10:52
 */
public class Demo01ReferenceCount {

    //这个成员属性唯一的作用就是占用一点内存
    private byte[] bigSize = new byte[5 * 1024 * 1024];//5MB

    Object reference = null;

    public static void main(String[] args) {
        Demo01ReferenceCount obj1 = new Demo01ReferenceCount();
        Demo01ReferenceCount obj2 = new Demo01ReferenceCount();

        obj1.reference = obj2;
        obj2.reference = obj1;

        obj1 = null;
        obj2 = null;
        //显式的执行垃圾回收行为
        //这里发生GC，obj1和obj2能否被回收？
//        System.gc();

        try {
            Thread.sleep(1000000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}
